package main

import (
	"fmt"
	"os"
	"path/filepath"
)

func main() {
	// 获取当前目录
	// currentDir, err := os.Getwd()
	// if err != nil {
	// 	fmt.Println("无法获取当前目录：", err)
	// 	return
	// }

	// 拼接static目录路径
	staticDir := "static"

	// 扫描static目录下的HTML文件
	htmlFiles, err := scanHTMLFiles(staticDir)
	if err != nil {
		fmt.Println("扫描HTML文件失败：", err)
		return
	}

	// 生成index.html文件
	if err := generateIndexHTML(htmlFiles); err != nil {
		fmt.Println("生成index.html文件失败：", err)
		return
	}

	fmt.Println("生成index.html文件成功！")
}

// 扫描static目录下的HTML文件
func scanHTMLFiles(dir string) ([]string, error) {
	var htmlFiles []string

	// 读取static目录下的所有文件和文件夹
	files, err := os.ReadDir(dir)
	if err != nil {
		return nil, err
	}

	// 遍历文件和文件夹
	for _, file := range files {
		// 如果是文件夹，则递归扫描
		if file.IsDir() {
			subDir := filepath.Join(dir, file.Name())
			subHTMLFiles, err := scanHTMLFiles(subDir)
			if err != nil {
				return nil, err
			}
			htmlFiles = append(htmlFiles, subHTMLFiles...)
		} else {
			// 如果是HTML文件，则添加到列表中
			if filepath.Ext(file.Name()) == ".html" {
				htmlFiles = append(htmlFiles, filepath.ToSlash(filepath.Join(dir, file.Name())))
			}
		}
	}

	return htmlFiles, nil
}

// 生成index.html文件
func generateIndexHTML(htmlFiles []string) error {
	// 创建或覆盖index.html文件
	indexFile, err := os.Create("index.html")
	if err != nil {
		return err
	}
	defer indexFile.Close()

	// 写入index.html文件的内容
	_, err = indexFile.WriteString("<html><body>\n")
	if err != nil {
		return err
	}

	for _, file := range htmlFiles {
		link := fmt.Sprintf("<a href=\"%s\">%s</a><br>\n", file, file)
		_, err = indexFile.WriteString(link)
		if err != nil {
			return err
		}
	}

	_, err = indexFile.WriteString("</body></html>")
	if err != nil {
		return err
	}

	return nil
}
